There are several techniques for prolonging the effective lifetime of a storage media. For instance, an error-correcting code (ECC) can be used for each page or sector in order to correct errors.
ECC encodes data in a way that a decoder can identify and correct errors in the data. For example, data are encoded by adding a number of redundant bits to them. When the data is reconstructed, the decoder examines the encoded message to check for any errors.
Traditionally, in order to simplify the design of ECC and to improve the error-correcting performance in most storage applications, the states of cells in memory are assumed to be independent and identically distributed (i.i.d.). However, if the cell states vary with use (e.g., Programing/Erasure (P/E) cycles applied to the cells). The error-correcting performance would decrease In addition, the threshold voltage (Vt) distributions of storage media such as NAND flash memory are different for every single cell due to disturb, random telegraph noise, and charge leakage and thus the i.i.d. property is not appropriate in real case, which leads to performance loss.